#include "oj_common/oj_time.h"
namespace ojlb {
namespace oj_common {

// public:
int64_t OjTime::getTimestamp() {    
    // auto now = std::chrono::system_clock::now();
    // std::time_t now_time_t = std::chrono::system_clock::to_time_t(now);
    // return now_time_t;
    auto now = std::chrono::system_clock::now(); // 获取当前时间点
    auto duration_since_epoch = now.time_since_epoch(); // 获取自纪元开始的时间间隔
    auto milliseconds_since_epoch = std::chrono::duration_cast<std::chrono::milliseconds>(duration_since_epoch).count(); // 将时间间隔转换为毫秒数
    return milliseconds_since_epoch;
}

std::string OjTime::timestampToDate(int64_t timestamp) {
    std::time_t seconds = timestamp / 1000; // 将毫秒级时间戳转换为秒级时间戳
    int milliseconds = timestamp % 1000; // 获取毫秒部分
    std::tm tm = *std::localtime(&seconds); // 将时间戳转换为std::tm结构
    std::ostringstream oss; // 格式化日期和时间
    oss << std::put_time(&tm, "%Y-%m-%d %H:%M:%S") << "." << std::setfill('0') << std::setw(3) << milliseconds;
    return oss.str();
}


} // namespace oj_common end
} // namespace ojlb end
